/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.upc.clase.demo.controller;

import edu.upc.clase.demo.entity.CriterioBusqueda;
import edu.upc.clase.demo.entity.ServicioAdicional;
import edu.upc.clase.demo.service.ServicioAdicionalService;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

/**
 *
 * @author Jose Vasquez
 */
@Controller("servicioadicionalController")
public class ServicioAdicionalController 
{
@Autowired
    private ServicioAdicionalService servicioadicionalService;
    private static Logger log = LoggerFactory.getLogger(ServicioAdicionalController.class);
    
  @RequestMapping("/servicioadicional/index")
    public ModelAndView index() {
        ModelAndView mav = new ModelAndView("servicioadicional/index");
        List<ServicioAdicional> servicioadicional = servicioadicionalService.buscarTodos();
        CriterioBusqueda criterioBusqueda = new CriterioBusqueda();
        mav.addObject("servicioadicional", servicioadicional);
        mav.addObject("criterioBusqueda",criterioBusqueda);
        return mav;
    }
    
    @RequestMapping(value = "/servicioadicional/new", method = RequestMethod.GET)
    public ModelAndView newServicioAdicional() {
        ModelAndView mav = new ModelAndView("servicioadicional/new");
        ServicioAdicional servicioadicional = new ServicioAdicional();
        mav.getModelMap().put("servicioadicional", servicioadicional);
        return mav;
    }

    @RequestMapping(value = "/servicioadicional/new", method = RequestMethod.POST)
    public String createServicioAdicional(@ModelAttribute("servicioadicionak")ServicioAdicional servicioadicional, SessionStatus status) {    
        servicioadicionalService.insertar(servicioadicional);
        status.setComplete();

        return "redirect:/pages/servicioadicional/index";
        
    }
    
    @RequestMapping(value = "/servicioadicional/edit", method = RequestMethod.GET)
    public ModelAndView ServicioAdicional(@RequestParam("CoServicio")Integer CoServicio) {    
        ModelAndView mav = new ModelAndView("servicioadicional/edit");
        ServicioAdicional servicioadicional = servicioadicionalService.buscar(CoServicio);
        mav.getModelMap().put("servicioadicional", servicioadicional);
        return mav;        
    }
    
    @RequestMapping(value="/servicioadicional/edit", method=RequestMethod.POST)
    public String update(@ModelAttribute("servicioadicional") ServicioAdicional servicioadicional, SessionStatus status) {
        servicioadicionalService.actualizar(servicioadicional);
        status.setComplete();
        return "redirect:/pages/servicioadicional/index";
    }
    
    @RequestMapping("/servicioadicional/delete")
    public ModelAndView delete(@RequestParam("CoServicio")Integer CoServicio)
    {
        ModelAndView mav = new ModelAndView("redirect:/pages/servicioadicional/index");
        ServicioAdicional servicioadicional = servicioadicionalService.buscar(CoServicio);
        servicioadicionalService.eliminar(servicioadicional);
        return mav;
    }
    
    
    @RequestMapping(value = "/servicioadicional/buscar", method=RequestMethod.POST)
    public ModelAndView buscar(@ModelAttribute("criterioBusqueda") CriterioBusqueda criterio, SessionStatus status) {
        ModelAndView mav = new ModelAndView("servicioadicional/resultadoBusqueda");
        log.info("resultado = " + servicioadicionalService.buscarPorNombre(criterio.getNoServicio()).size());
        mav.getModel().put("resultado",servicioadicionalService.buscarPorNombre(criterio.getNoServicio()));
        return mav;
    }  
    
    
    
    
    
}
